// analogWrite (pin, valore) int blue = 20; int green = 0; int red = 0; int casa = 255; int stelle = 200; int Sole = 0; // Variabile Sole int ledblu = 3; //led blu int ledgre = 5; //led verde int ledred = 6; //led rosso int ledcasa = 9; //led casette int ledstelle = 10; //led di potenza per tremolio stelle int LuceSole = 11; // Pin Lampada del Sole int randNumber=10;//variabile tremolio int tempo = 30000; //tempo notte giorno in millisecondi di base unsigned int time = 1; //variabile che contiene la regolazione durata giorno notte int ttime = 60; //velocita passaggio notte giorno int lumstelle = 10; //variabile stelle int passo = 1; int relepastori = 0; //rele per pastori animati int relenativita = 1; //rele per natività int relecasa = 2;//rele per illuminazione casette int releluna = 4;//rele per illuminazione luna void setup() { pinMode (relepastori, OUTPUT); digitalWrite(relepastori,LOW); pinMode (relenativita, OUTPUT); digitalWrite(relenativita,LOW); pinMode (relecasa, OUTPUT); digitalWrite(relecasa,LOW); pinMode (releluna, OUTPUT); digitalWrite(releluna,LOW); // nulla da inizializzare } void loop() { int sensorValue = analogRead(A0); time = tempo + (sensorValue * 40); for(passo = 1; passo < 455; passo+=1) // da notte a giorno // { analogWrite(ledblu,blue); analogWrite(ledgre,green); delay(10); analogWrite(ledcasa,casa); analogWrite(ledstelle,lumstelle); randNumber = random(20); if (casa > 40 ) lumstelle = casa -20 + randNumber; if (casa < 40) lumstelle = casa - 1; delay(ttime); if (casa > 1) casa-=1; if (blue <= 100) blue+=1; if (blue < 255 && red > 100 && green > 100) blue+=1; if (green <= 100 && red < 100 && blue >= 100 ) green+=1; analogWrite(ledgre,green); delay(10); if (green > 100 && red < 255) red+=1; analogWrite(ledred,red); delay(10); if (green < 255 && red > 100) green+=1; analogWrite(ledgre,green); delay(10); if (green > 100 && Sole < 210) // Sole Inizio Sole+=1; analogWrite(LuceSole,Sole); delay(10); // Sole Fine } red = 255; green = 255; blue = 255; lumstelle = 0; //Sole = 255; // Sole analogWrite(ledstelle,lumstelle); analogWrite(ledblu,blue); analogWrite(ledgre,green); analogWrite(ledred,red); analogWrite(ledcasa,casa); //analogWrite(LuceSole,Sole); // Sole casa=1; digitalWrite (relepastori, HIGH); digitalWrite (relenativita, HIGH); digitalWrite (relecasa, LOW); digitalWrite (releluna, LOW); // Fine da Notte a giorno delay(time); for(blue = 255; blue >=1; blue-=1) // da giorno a notte { analogWrite(ledblu,blue); analogWrite(ledgre,green); analogWrite(ledred,red); analogWrite(ledcasa,casa); analogWrite(LuceSole,Sole); delay(ttime); if (green > 150 && blue < 200) green-=1; delay(ttime); if (Sole > 80 && blue < 200) Sole-=1; } blue=0; for (red = 255; red >=1; red-=1) { delay(ttime); if (green >=1) green-=1; delay(ttime); if (Sole >=1) Sole-=1; if (red < 100) delay (ttime); analogWrite(ledblu,blue); analogWrite(ledred,red); analogWrite(ledgre,green); analogWrite(ledcasa,casa); analogWrite(ledstelle,lumstelle); analogWrite(LuceSole,Sole); randNumber = random(20); if (casa > 20) lumstelle = casa - 20 + randNumber; if (casa <=20) lumstelle = 0; if (casa < 255) casa+=1; if (red < 10) blue+=1; } green=0; red=0; analogWrite(ledblu,blue); analogWrite(ledgre,green); analogWrite(ledred,red); analogWrite(ledcasa,casa); casa=255; digitalWrite (relepastori, LOW); digitalWrite (relenativita, LOW); digitalWrite (relecasa, HIGH); digitalWrite (releluna, HIGH); for (stelle = 1; stelle < time; stelle+=1) { randNumber = random(70); lumstelle = 180 + randNumber; analogWrite(ledstelle,lumstelle); delay(2); } }